/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package exercicio1_qualidade_imc;

/**
 *
 * @author Thalyta
 */
public class MetodoIMC {

    private Double imc = 0.0;
    private String condicao = null;

    public void fazerCalculo(Double peso, Double altura) {
        Double pAltura, pPeso;
         if (peso == 0) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        if(peso < 0) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        if(altura < 0) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        if(altura > 3) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        if(altura == 0) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
      
      
        pAltura = altura;
        pPeso = peso;
        
        if(pAltura.isNaN()) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        if(pPeso.isNaN()) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
       
         this.imc = (peso / (altura*altura));
    }

    public void classificar(char sexo) {

        if ((sexo != 'F') && (sexo != 'M')) {
            throw new RuntimeException("Falha: É necessário informar o sexo (M, F)");
        }
        if (sexo == 'M') {
            if (imc < 20.7) {
                condicao = "Abaixo do peso";
            } else if (imc >= 20.7 && imc < 26.4) {
                condicao = "No peso normal";
            } else if (imc >= 26.4 && imc < 27.8) {
                condicao = "Marginalmente acima do peso";
            } else if (imc >= 27.8 && imc < 31.1) {
                condicao = "Acima do peso ideal";
            } else if (imc >= 31.1) {
                condicao = "Obeso";
            }
        } else {
            if (imc < 19.1) {
                condicao = "Abaixo do peso";
            } else if (imc >= 19.1 && imc < 25.8) {
                condicao = "No peso normal";
            } else if (imc >= 25.8 && imc < 27.3) {
                condicao = "Marginalmente acima do peso";
            } else if (imc >= 27.3 && imc < 32.3) {
                condicao = "Acima do peso ideal";
            } else if (imc >= 32.3) {
                condicao = "Obeso";
            }
        }
    }

    public Double getImc() {
        return imc;
    }

    public String getCondicao() {
        return condicao;
    }

}
